package com.mfh.comna.api.widgets; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.ImageButton; import android.widget.RelativeLayout; import android.widget.TextView; import com.mfh.comna.R; /** * 自定义搜索控件 * @author ZZN * */ public class CustomSearchView extends RelativeLayout { private Context context; private EditText etQueryText; private ImageButton ibClear; private boolean queryEnabled = true;//是否支持查询 public interface CustomSearchViewListener{ void beforeTextChanged(java.lang.CharSequence charSequence, int i, int i1, int i2); void onTextChanged(java.lang.CharSequence charSequence, int i, int i1, int i2); void afterTextChanged(android.text.Editable editable); void doSearch(String queryText); } private CustomSearchViewListener listener; public void setListener(CustomSearchViewListener listener){ this.listener = listener; } public CustomSearchView(Context context) { super(context); this.context = context; initView(); } public CustomSearchView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; initView(); } private void initView() { View.inflate(context, R.layout.custom_search_view, this); etQueryText = (EditText) findViewById(R.id.et_query); etQueryText.setImeOptions(EditorInfo.IME_ACTION_SEARCH);//设置键盘回车类型 etQueryText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { if (i == EditorInfo.IME_ACTION_SEARCH || (keyEvent != null && keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { if (listener != null) { listener.doSearch(getQueryText()); } return true; } return false; } }); etQueryText.addTextChangedListener(queryTextWatcher); ibClear = (ImageButton) findViewById(R.id.search_clear); ibClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // etQueryText.setText(""); etQueryText.getText().clear(); } }); } private TextWatcher queryTextWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { if (listener != null) { listener.beforeTextChanged(charSequence, i, i2, i3); } } @Override public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { //1.隐藏/显示删除按键 if (charSequence != null && charSequence.length() > 0) { ibClear.setVisibility(View.VISIBLE); } else { ibClear.setVisibility(View.INVISIBLE); } if (listener != null) { listener.onTextChanged(charSequence, i, i2, i3); } } @Override public void afterTextChanged(Editable editable) { if (listener != null) { listener.afterTextChanged(editable); } } }; public void setHint(String queryHint){ etQueryText.setHint(queryHint); } public void setHint(int resId){ etQueryText.setHint(resId); } public void setHint(String hint, int hintColor, int backgroundColor){ etQueryText.setHint(hint); etQueryText.setHintTextColor(hintColor); etQueryText.setBackgroundColor(backgroundColor); } public void setHintColor(int hintColor){ etQueryText.setHintTextColor(hintColor); } public void setTextColor(int color){ etQueryText.setTextColor(color); } /** * 设置是否支持输入 * */ public void setEnabled(boolean enabled){ queryEnabled = enabled; if(enabled){ etQueryText.setText(""); // etQueryText.setFocusable(true); }else{ etQueryText.setText(""); // etQueryText.setFocusable(false); } // etQueryText.setClickable(!enabled); } public String getQueryText(){ return etQueryText.getText().toString(); } }